<?php

namespace app\model;

use support\Model;

/**
 * 订单模型
 *
 * 字段说明：
 * @property int $id 订单ID
 * @property string $order_no 订单号
 * @property int $user_id 用户ID
 * @property float $total_amount 订单总金额
 * @property float $pay_amount 实付金额
 * @property float $discount_amount 优惠金额
 * @property int $status 订单状态：0待付款，1已付款，2已发货，3已完成，4已取消，5已退款
 * @property int $pay_status 支付状态：0未支付，1已支付，2已退款
 * @property int|null $pay_time 支付时间（时间戳）
 * @property string|null $pay_method 支付方式：wechat, alipay, score
 * @property int $delivery_status 发货状态：0未发货，1已发货，2已签收
 * @property int|null $delivery_time 发货时间（时间戳）
 * @property string|null $receiver_name 收货人姓名
 * @property string|null $receiver_phone 收货人电话
 * @property string|null $receiver_address 收货地址
 * @property string|null $remark 订单备注
 * @property int $created_at 创建时间（时间戳）
 * @property int $updated_at 更新时间（时间戳）
 * @property float $score 云豆
 * @property float $card_score 福利卡云豆
 * @property string|null $card_score_data 福利卡云豆明细
 * @property string|null $transaction_id 微信支付流水号
 * @property float $money 微信支付金额
 * @property int $pay_expired_at 支付过期时间（时间戳）
 * @property string|null $sender_phone 下单者电话
 * @property int|null $refund_status 退款状态0-未退款 1-退款中 2-已退款
 * @property int|null $refund_record_id 退款记录ID
 * @property int|null $refund_at 退款时间（时间戳）
 * @property int $address_id 收货地址ID
 * @property string|null $delivery_province 收货地址省
 * @property string|null $delivery_city 收货地址市
 * @property string|null $delivery_district 收货地址区
 * @property int $ping_id 点评ID
 * @property int $pick_up_point_id 自提点id
 * @property string|null $express_type 配送方式
 * @property string|null $express_no 快递单号
 * @property string|null $express_company_code 快递公司代码
 * @property int|null $express_send_user_id 发货人ID
 * 
 */

class OrderModel extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'order';

    /**
     * The primary key associated with the table.
     *
     * @var string
     */
    protected $primaryKey = 'id';

    /**
     * Indicates if the model should be timestamped.
     *
     * @var bool
     */
    public $timestamps = false;

    /**
     * 关联用户
     */
    public function user()
    {
        return $this->belongsTo(UserModel::class, 'user_id', 'id');
    }

    /**
     * 关联自提点
     */
    public function pick_up_point()
    {
        return $this->belongsTo(PickUpPointModel::class, 'pick_up_point_id', 'id');
    }

    /**
     * 关联订单商品
     */
    public function items()
    {
        return $this->hasMany(OrderItemModel::class, 'order_id', 'id');
    }

    public function getStatusText(){
        if($this->express_type == self::EXPRESS_TYPE_PICK_UP_POINT){
            return self::PICK_UP_STATUS_TEXT[$this->status];
        }else{
            return self::STATUS_TEXT[$this->status];
        }
    }

    const EXPRESS_TYPE_PICK_UP_POINT = 'pickUpPoint';
    const EXPRESS_TYPE_EXPRESS = 'express';

    

    const STATUS_TEXT = [
        0 => '待付款',
        1 => '已支付',
        2 => '已发货',
        3 => '已完成',
        4 => '已取消',
        5 => '已退款',
    ];

    const PICK_UP_STATUS_TEXT = [
        0 => '待付款',
        1 => '已支付',
        2 => '待提货',
        3 => '已完成',
        4 => '已取消',
        5 => '已退款',
    ];
}
